1. Field of the Invention
The present invention relates generally to host adapters that interface two I/O buses, and more particularly to aborting data transfer commands sent to a host adapter.
2. Description of Related Art
Host adapter integrated circuits were widely used for interfacing two I/O buses such as a host computer I/O bus and a SCSI bus. A software manager executing on the host computer generated commands that requested storage and retrieval of data. The commands were delivered to a host adapter that in turn routed the commands to the appropriate target I/O devices.
Occasionally, the software manager needed to abort a data transfer command before the command had been completed. For example, the data requested from a target I/O device was no longer needed, or execution of the command had exceeded a maximum time limit imposed by the software manager. When the software manager needed to abort a data transfer command, the software manager sent a second hardware control block that requested the host adapter abort the specified data transfer command.
An abort command was effectively a second command to be managed by the host adapter concurrently with the first command that requested the data transfer. Both commands related to the same operation that was executed by a target I/O device.
Abort commands were difficult to execute, because abort commands were completely asynchronous with the execution of the first command. A host adapter received an abort command at any time from before the host adapter had received the first command, i.e., the original command block containing the command, until after the host adapter had completed execution of the first command.
Execution of the abort command was further complicated because the behavior of the target I/O device, in response to the abort command, was unpredictable. After the first command was transferred to the target I/O device, the target I/O device was in control of how execution of the first command proceeded. The target I/O device could continue executing the first command, or the target I/O device could enable the host adapter to abort execution of the first command. If the target device continued executing the first command, the target I/O device prevented the host adapter from delivering the abort command to the target I/O device. Thus, the management of abort commands by the host adapter was complex and could require significant resources.